![]() video encoding and decoding methods and video encoder and decoder
专利摘要:
low complexity intrapreview for video encoding. The present invention provides a unique intrapreview process that improves video encoding efficiency. h.264 / avc uses reference pixels in a horizontal delimiter located immediately above a target block to be predicted and reference pixels in a vertical delimiter located immediately to the left of the target block. In the present invention, at least one of a horizontal delimiter pixel array and a vertical delimiter pixel array is retrieved. then the retrieved pixels are added to other delimiter pixels to extend its array. intrapreview is performed based solely on the extended pixel array of the delimiter. 公开号:BR112013000963B1 申请号:R112013000963 申请日:2011-07-14 公开日:2019-12-03 发明作者:Jan Bossen Frank;Keng Tan Thiow 申请人:Ntt Docomo Inc; IPC主号:
专利说明:
VIDEO ENCODING AND DECODING METHODS AND VIDEO ENCODER AND DECODER Background of the invention 1. Text of the technical field [001] The present invention relates to video encoding and, in particular, the intraframe prediction in which a block of samples is predicted using previously encoded pixels and reconstructed from the same frame. video. 2. Previous information [002] Digital video requires a large amount of data to represent each frame of a video sequence (for example, a series of frames) without compression. It is not feasible for most applications to transmit uncompressed digital video over computer networks due to bandwidth limitations. In addition, uncompressed digital video requires large amounts of storage space. Digital video is usually encoded in some way that reduces storage and bandwidth requirements. [003] One of the techniques for encoding digital video is interframe prediction or interpredition. Interpretation explores temporal redundancies between different frames. Temporally adjacent video frames commonly include blocks of pixels, which remain substantially the same. During the encoding process, a motion vector interrelates the movement of a block of pixels in one frame with a block of similar pixels in another frame. Consequently, the system is not required to encode the pixel block twice. Instead, the system encodes the pixel block once and establishes a motion vector to predict the other pixel block. [004] Another technique for encoding digital video is intraframe or intraprediction prediction. Intrapredition encodes a frame or a portion of it, without reference to pixels in other frames. Intrapredition explores spatial redundancies between blocks of pixels within a frame. As blocks of spatially adjacent pixels generally have similar attributes, the efficiency of the coding process is improved by reference to the spatial correlation between adjacent blocks. This correlation can be explored by predicting a target block based on the prediction modes used in adjacent blocks. Summary of the invention [005] The present invention provides a unique intraprediction process that improves the efficiency of video encoding. H.264 / AVC uses reference pixels on a horizontal border located immediately above a target block to be predicted and reference pixels on a vertical border located immediately to the left of the target block. In the present invention, at least a few pixels from a horizontal border pixel array or from a vertical border pixel array are recovered. Then, the recovered pixels are added to the pixels of the other border to extend the matrix of the same. Intraprediction is performed, based only on the extended array of border pixels. In an embodiment of the present invention, at least some of the vertical border pixels are retrieved and added to the horizontal border pixels to extend the matrix thereof. [006] The present invention eliminates the decision process related to the choice of horizontal or vertical boundary from which the reference pixels are recovered. The present invention also eliminates the recurring process of calculating a vertical boundary position that intersects with a prediction direction, where the recurring calculation process normally includes a division operation. The elimination of these processes allows the intraprediction process to be implemented in SIMD architectures (Single-Introduction Multiple Data, processing multiple data from a single instruction), thus improving the computational efficiency of video encoding. [007] In an embodiment according to the present invention, at least some pixels between the vertical border pixels are recovered, using a vertical pixel identifier, expressed by the size representing the size of a target block to be predicted, angle represents a prediction direction and col. is a counter that is decreased by 1 unit from -1 to the angle. The retrieved pixels are added to the horizontal pixels at a location identified by a horizontal pixel identifier [col.]. [008] In another modality, in the recovery of at least some of the vertical border pixels, Âng. Inv. Is calculated in where N is an integer power of 2. Then, at least some pixels among the vertical border pixels are retrieved using a vertical pixel identifier which is expressed by [col x Âng. Inv. >> log2 N]. The retrieved pixels are added to the horizontal pixels at a location identified by a horizontal pixel identifier [col]. [009] In another modality, Âng. Inv. Is obtained from a query table, which lists the values of Âng. Inv. In relation to the angle values. [0010] In another mode, a pixel is identified between the vertical border pixels using a vertical pixel identifier [line], where line is a counter that is incremented by 1 unit from 0 to the size. The retrieved pixel is added to the horizontal border pixels at a location identified by a horizontal pixel identifier [int + 1], where int is the representation of an integer of a pixel's position intersecting with a prediction direction. [0011] The present invention also provides an encoder and a decoder which implement an intrapredictive operation in which at least some of the pixels of a horizontal border pixel array or of a vertical border pixel array are recovered. Then, the recovered pixels are added to the pixels of the other border to extend the matrix of the same. Intraprediction is performed based solely on the extended array of border pixels. Brief description of the drawings [0012] FIG. 1 is a block diagram showing an example of a hardware architecture in which the present invention can be implemented. [0013] FIG.2 is a block diagram showing an overview of a video encoder to which the present invention can be applied. [0014] FIG. 3 is a block diagram showing an overview of a video decoder to which the present invention can be applied. [0015] FIG. 4 is a block diagram showing the functional modules of an encoder according to an embodiment of the present invention. [0016] FIG. 5 is a flowchart showing an intraprediction process performed by an intraprediction module of the embodiment of the present invention. [0017] FIG. 6 is a block diagram showing the functional modules of a decoder according to an embodiment of the present invention. [0018] FIG. 7 is a diagram showing the prediction directions, illustrating the intrapredition_4x4 modes accepted in H.264 / AVC. [0019] FIG. 8 is a diagram showing the prediction directions proposed in Document No. JCT-VC A119. [0020] FIG. 9 is a flowchart showing the process proposed in JCT-VC A119, corresponding to the generation of a predicted block in one of the prediction directions shown in FIG. 7. [0021] FIG. 10 is a flowchart showing the low complexity intraprediction process performed in accordance with an embodiment of the present invention. [0022] FIG. 11A is a schematic view showing a prediction block and horizontal and vertical border pixel arrays. [0023] FIG.11B is a schematic view showing an extended horizontal border pixel array with vertical border pixels. [0024] FIG. 12 is a flowchart showing the process of extending a horizontal border pixel array performed in accordance with an embodiment of the present invention. [0025] FIG. 13 is a flowchart showing another modality of extending an array of horizontal border pixels. [0026] FIG. 14 is a flowchart showing the low complexity intraprediction process performed in accordance with another embodiment of the present invention. Detailed description of the drawings and the currently preferred embodiments [0027] FIG. 1 shows as an example the hardware architecture of a computer 100 in which the present invention can be implemented. Please note that the hardware architecture shown in FIG. 1 can be common in both a video encoder and a video decoder that implement the modalities of the present invention. Computer 100 includes a processor 101, memory 102, storage device 105 and one or more input and / or output (I / O) devices 106 (or peripherals) that are coupled in communication via a local interface 107 The local interface 105 can be, for example, among others, one or more buses or other wired or wireless connections, as known in the art. [0028] Processor 101 is a hardware device to run the software, particularly the one stored in memory 102. Processor 101 can be any custom or commercially available processor, a central processing unit (CPU), an auxiliary processor among several processors associated with computer 100, a semiconductor-based microprocessor (in the form of a microchip or group of chips), or generally any device for executing software instructions. [0029] Memory 102 comprises a medium that can be read by a computer and that can include any element of volatile memory or a combination of these elements (for example, random access memory (RAM, such as DRAM, SRAM, SDRAM, etc.) ), and non-volatile memory elements (eg, ROM, hard disk, tape drive, CD-ROM, etc.). In addition, memory 102 may incorporate electronic, magnetic, optical and other storage media of storage. A computer-readable medium can be any medium that can store, communicate, disseminate or transport the program for use by the system, apparatus or device for executing instructions or in connection with them. Please note that memory 102 can have a distributed architecture, in which several components are located distant from each other, but can be accessed by processor 101. [0030] Software 103 in memory 102 may include one or more separate programs, each of which contains an ordered list of executable instructions for implementing logical functions of computer 100, as described below. In the example of FIG. 1, software 103 in memory 102 defines the video encoding of computer 100 or the video decoding feature according to the present invention. In addition, although it is not necessary, memory 102 may contain an operating system (S / O) 104. Operating system 104 essentially controls the execution of computer programs and provides programming, input and output control, management data and files, memory management and communication control and related services. [0031] The storage device 105 of the computer 100 can be one of many different types of storage devices, including a fixed or portable storage device. As an example, storage device 105 may be magnetic tape, disk, flash memory, volatile memory or a different storage device. In addition, storage device 105 can be a secure digital memory card or any other removable storage device 105. [0032] I / O devices 106 may include input devices, for example, among others, a touch screen, keyboard, mouse, scanner, microphone or other input device. In addition, I / O devices 106 may also include output devices, for example, among others, a monitor or other output devices. I / O devices 106 can also include devices that communicate through inputs and outputs, for example, among others, a modulator / demodulator (modem to access another device, system or network), a radio frequency (RF) , a wireless or other transceiver, a telephone interface, a bridge, a router, or other devices that work as an input and output. [0033] As is known to those with common technical skills, video compression is achieved by removing redundant information in a video sequence. There are many different video encoding standards, such as MPEG-1, MPEG-2, MPEG-4, H.261, H.263 and H.264 / AVC. It should be noted that the present invention should not be limited in the case of applying any specific video encoding standard. However, the following description of the present invention is provided with the H.264 / AVC standard as an example, which is incorporated into this document for reference. H.264 / AVC is the latest video encoding standard and achieves a significant performance improvement over previous encoding standards such as MPEG-1, MPEG-2, H.261 and H.263. [0034] In H.264 / AVC, each frame or image in a video can be divided into several pieces. The pieces are then divided into blocks of 16x16 pixels called macroblocks, which can later be divided into blocks of 8x16, 16x8, 8x8, 4x8, 8x4 and 4x4 pixels. There are five types of chunks supported by H.264 / AVC. In pieces I, all macroblocks are coded using intraprediction. In pieces P, macroblocks can be coded using intra or interpredition. The P pieces allow only one motion compensated prediction signal (Motion Compensated Prediction- MCP), per macroblock. In pieces B, macroblocks can be coded using intra or interpredition. Two MCP signals can be used by prediction. The SP pieces allow the P pieces to be exchanged between different video streams efficiently. An SI piece corresponds exactly to an SP piece for random access or recovery after an error using only intraprediction. [0035] FIG. 2 shows an overview of a video encoder to which the present invention can be applied. The blocks shown in the figure represent the functional modules performed by processor 101 that runs software 103 in memory 102. An image of video frame 200 is fed into a video encoder 201. The video encoder handles image 200 in units of macroblocks 200A. Each macroblock contains several pixels of the image 200. In each macroblock, a transform in transform coefficients is performed, followed by a quantization in levels of transform coefficients. In addition, the intra or interpredition is used to not perform the coding steps directly on the pixel data, but on the differences of the same for the predicted pixel values, thus obtaining small values that are more easily compressed. [0036] For each piece, the 201 encoder generates a number of syntax elements that form a coded version of the macroblocks of the respective piece. All residual data elements in the syntax elements, which are related to the coding of the transform coefficients, such as the levels of the transform coefficients or a map of meanings that indicates the levels of the ignored transform coefficients, are called residual data syntax. In addition to these residual data syntax elements, the syntax elements generated by the encoder 201 contain control information syntax elements that contain control information about how each coded macroblock has been encoded and must be decoded, respectively. In other words, the syntax elements can be divided into two categories. The first category, that of control information syntax elements, contains elements related to a type of macroblock, submacroblock and information about the prediction modes of spatial and temporal types, as well as control information based on the chunk and the macroblock, for example. In the second category, all residual data elements, such as a map of meanings that indicates the locations of all significant coefficients within a block of quantized transform coefficients and the values of significant coefficients, which are indicated in units of corresponding levels to the quantization steps, they are combined and become elements of residual data syntax. [0037] The 201 encoder comprises an entropy encoder that encodes the syntax elements and generates arithmetic code words for each piece. When generating the arithmetic code words for a piece, the entropy encoder explores the statistical dependencies between the data values of syntax elements in the bitstream of the video signal. Encoder 201 generates an encoded video signal from an image piece 200 to a video decoder 301 shown in FIG. 3. [0038] FIG. 3 shows an overview of a video decoder to which the present invention can be applied. Likewise, the blocks shown in the figure represent the functional modules performed by the processor 101 that runs the software 103 in memory 102. The video decoder 301 receives the encoded video signal and, first, entropy decodes the signal back to the syntax elements. Decoder 301 uses the syntax elements to reconstruct, macroblock by macroblock and then piece by piece, the image samples 300A of the pixels in the image 300. [0039] FIG. 4 shows the functional modules of the video encoder 201. These functional modules are performed by the processor 101 that runs the software 103 in memory 102. The image of an input video is a frame or field of a natural video image (without compression) ) defined by sample points that represent components of the original colors, such as chrominance ("chroma") and luminance ("luma"), but other components are possible, such as hue, saturation and value. The image of the input video is divided into 400 macroblocks, each representing a square area of the image consisting of 16x16 pixels of the color luma component of the image. The input video image is also divided into macroblocks, each representing 8x8 pixels from each of the two chroma components of the image color. In the general operation of the encoder, the inserted macroblocks can be predicted temporally or spatially through inter or intra prediction. However, for the purpose of the discussion, it is assumed that macroblocks 400 are all macroblocks of piece type I and are submitted only to intraprediction. [0040] Intraprediction is obtained in an intraprediction module 401, the operation of which will be discussed in detail below. The intraprediction module 401 generates a prediction block 402 from the horizontal and vertical border pixels of neighboring blocks, which were previously encoded, reconstructed and stored in a 403 frame memory. The 404 residue of the prediction block 402, the which corresponds to the difference between a target block 400 and the prediction block 402, is transformed, dimensioned and quantized in a transform / quantization module 405 by means of methods and techniques known to those skilled in the field of video coding. The quantized transform coefficients 406 are then encoded by entropy in an entropy coding module 407 and transmitted (together with other intrapredictive information) as an encoded video signal 408. [0041] The video encoder 201 contains a decoding feature to perform intraprediction on target blocks. The decoding feature comprises a quantize / reverse transform module 409, which performs the reverse quantization and reverse transform of the quantized transform coefficients 406 to produce the decoded prediction residues 410, which are added to the prediction block 402. The addition of the decoded prediction residues 410 and the prediction block 402 is a reconstructed block 411, which is stored in the memory of frame 403 and will be read in it and used by the intraprediction module 401 to generate a prediction block 402 for decoding the next target block 400. [0042] FIG. 5 is a flowchart showing the processes performed by the intraprediction module 401. According to the H.264 / AVC standard, intraprediction involves predicting each pixel of target block 400 under a variety of prediction modes, using interpolations of the pixels of border ("reference pixels") of neighboring blocks previously coded and reconstructed. Prediction modes are identified by positive integers (0, 1, 2 ...), each associated with a different instruction or algorithm for the prediction of specific pixels in target block 400. The intraprediction module 401 performs the intraprediction under the respective prediction modes and generates different prediction blocks. Under a full search algorithm (“FS”), each generated prediction block is compared to target block 400 to find the ideal prediction mode, which minimizes the prediction residuals 404 or produces smaller prediction residuals 404 between the modes of prediction. The identification of the ideal prediction mode is compressed and sent to the 301 decoder with other syntax elements of the control information. [0043] Each prediction mode can be described by a general prediction direction, as described verbally (that is, horizontal up, vertical and diagonal down to the left). A prediction direction can be described graphically by an angular direction expressed by means of a diagram with arrows, as shown in FIG. 7. In this type of diagram, each arrow can be considered to represent a prediction direction or a prediction mode. The angle corresponding to a prediction mode has a general relationship with the direction from the weighted average location of the reference pixels used to predict a target pixel to the location of the target pixel. Please note that the prediction modes include a CC prediction mode that is not associated with any prediction direction and therefore cannot be described graphically in the diagram, unlike the other prediction modes. In the CC prediction mode, the prediction block 402 is generated in such a way that each pixel in the prediction block 402 is uniformly set to the average value of the reference pixels. [0044] Returning to FIG. 5, the prediction mode is started at Step 501 Subsequently, at Step 502, it is determined whether the prediction mode indicates the CC prediction. If so, the flow advances to Step 503, in which a prediction block CC 402 is generated with the average value of the reference pixels in Step 503. If the prediction mode indicates other information, a prediction block 402 is generated according to the instruction or algorithm associated with the prediction mode in Step 504, the process of which will be discussed in detail below. After Step 503 or 504, the flow moves to Step 505, in which it is determined whether the prediction blocks are generated for all prediction modes. If intraprediction is performed in all prediction modes, the flow advances to Step 506. Otherwise, the prediction mode is incremented in Step 507 and the flow returns to Step 502. In Step 506, each prediction block generated is compared with target block 400 to determine the optimal prediction mode, which minimizes the residuals of the prediction 404. [0045] FIG. 6 shows the functional modules of the video decoder 301. These functional modules are realized by the processor 101 that runs the software 103 in memory 102. The encoded video signal of the encoder 201 is received first by an entropy decoder 600 and decoded by entropy of back in quantized transform coefficients 601. The quantized transform coefficients 601 are inversely quantized and transformed by a quantization / inverse transform module 602 to generate prediction residues 603. An intraprediction module 604 is notified of the prediction mode selected by the 201 encoder According to the selected prediction mode, the intraprediction module 604 performs an intraprediction process similar to that performed in Steps 502, 503 and 504 of FIG. 5 to generate a prediction block 605, using the boundary pixels of the previously reconstructed neighboring blocks and stored in a frame memory 606. Prediction block 605 is added to the prediction residues 603 to reconstruct a decoded video signal block 607 . Reconstructed block 607 is stored in the memory of frame 606 for use in predicting the next block. [0046] A detailed description will be given below in the process of Step 504 performed by the intraprediction modules 401 and 604 to generate a prediction block under one of the prediction modes, except the CC prediction mode. H.264 / AVC accepts intrapredition_4x4, intrapredition_8x8 and intrapredition_16x16. Intrapredition_4x4 is commonly used when there is significant detail in the image. The intrapredição_4x4 individually predicts the 16 luma 4x4 blocks within a macroblock. Intrapredition_4x4 is performed in nine prediction modes, including a CC prediction mode. The spatial prediction directions along which the 4 x 4 intraprediction is performed are shown in FIG. 7. Intra-prediction_8x8 is performed in nine prediction modes, including a CC prediction mode. Intra-prediction_16x16 is performed in four prediction modes, including a CC prediction mode. [0047] Recent studies show that increasing the number of prediction directions, or increasing the number of prediction modes, generally contributes to improving the efficiency of compression in video encoding. See, for example, documents No. JCT-VC A119 ("Angular Intrapredition") and JCT-VC A124 ("Intrapredition with arbitrary direction"), forwarded to the Joint Collaborative Team on Video Coding , JCT-VC), both of which are incorporated herein by reference. An increase in the number of prediction directions leads to an increase in the number of angular intervals of the available prediction directions and, therefore, an increase in the number of candidates in the prediction block. Increasing the number of candidates in the prediction block simply increases the chances of having a prediction block that is almost the same as a target block to be coded. FIG. 8 is a diagram showing the prediction directions proposed in Document No. JCTVC A119. In FIG. 8, the reference pixels consist of seventeen (17) horizontal pixels and seventeen (17) vertical pixels, where the upper left pixel is common to the horizontal and vertical borders. In this way, 33 different prediction directions are available to generate prediction pixels in an 8x8 block. JCT-VC A124 proposes an arbitrary directional intraprediction in which the number of prediction directions is adjusted according to the size of the block to be predicted. [0048] FIG. 9 is a flow chart showing the process, proposed in JCT-VC A119, of generating a prediction block in one of the prediction directions represented in FIG. 8. In the description of the following process, some algorithms are simplified to facilitate the explanation. In addition, the described process is limited to intraprediction in a mainly vertical prediction direction. Intraprediction in a mostly horizontal prediction direction can be implemented symmetrically to the process shown in FIG. 9, as demonstrated in the software provided by JCT-VC A119. Although FIG. 8 shows an 8x8 block to be predicted, the process shown in FIG. 9 is expandable to be applied to several numbers of pixels in different configurations. For example, a block to be predicted may comprise a 4x4 pixel array. A prediction block can also comprise an 8x8, 16x16 pixel array or larger pixel arrays. Other pixel configurations, including square and rectangular arrays, can also form a prediction block. [0049] In Step 900 in FIG. 9, the reference pixels at the horizontal and vertical borders that are immediately above and to the left of a target block, respectively, are read from neighboring blocks previously coded, reconstructed and stored in a frame memory, such as memory 403 shown in FIG. 4. The horizontal border pixels are stored in an area of memory called "refH '. The vertical border pixels are stored in another area of memory called" refV'. Returning to FIG. 8, the reference pixels are identified by their coordinates in a coordinate system whose origin is the position of the upper left pixel in the 8x8 block. Thus, the horizontal border pixels have the coordinates expressed by p [x, y] with x = 0, 1 ... 16 and y = 0. The vertical border pixels have coordinates expressed by p [x, y] with x = 0, y = 0, -1, -2 ... -16. [0050] It is assumed that the horizontal border pixels stored in the refH memory area are identified by a logical address (x) with x = 0, 1 ... 16 and that the vertical border pixels stored in the refV memory area they are also identified by means of a logical address (y) with y = 0, -1, -2. -16, where each pixel is stored at the address that has the number in the coordinate from which it is read. Therefore, as the horizontal and vertical pixels are represented graphically in FIG. 8, the areas of memory refH and refV can be considered extending in a linear and orthogonal way with each other, each with a length of 2 x size + 1, where "size" is a parameter that represents the block size -target. The size is assumed to have a value equal to an integer power of 2, such as 4, 8, 16 ... A low pass filter, as described in Section 8.3.2.2.1 in H.264 / AVC can optionally be applied to the pixels in refH and refV. [0051] In Step 901, a counter called "line" is set to zero ("0"). The line counter has a value of 0 the size and indicates the position of the line of a prediction pixel in the prediction block. In Step 902, a parameter called "pos" is calculated by angle x (line + 1). Angle is a parameter that has a fractional number in a fixed point representation. Thus, the angle is formed with an integer part and a fractional part consisting of a fixed number of binary digits. Angle represents one of the prediction directions shown in FIG. 8. For example, "angle = size" identifies the prediction direction given by coordinates [x = 0, y = 0] in FIG. 8. The angle with a positive value identifies a prediction direction that intersects only with the horizontal boundary, while the angle with a negative value identifies a prediction direction that intersects with the horizontal and vertical boundaries. The angle varies within a range determined by the number of prediction directions to be used. As proposed in JCT-VC A 124, the number of prediction directions to be used can be determined according to the size of a block to be predicted. In the following description, it is assumed that the angle has a fractional number that varies within a "size" to "size" range. Please note that the limits of the angle range can be defined with other values. [0052] As an angle, the pos parameter consists of an integer part and a fractional part, which consists of a fixed number of binary digits equal to the logarithm at base 2 of the angle range limit, which can be expressed by log2_size accordingly with the assumption above that the limit of the angle range is defined as size. Pos identifies the position of an intersection between the horizontal boundary and the prediction direction represented by the angle. Returning to Step 902, the "pos >> log2_ta Size" operation identifies an integer in pos, which is stored in an "int 'parameter, and the" pos & (size - 1) "operation identifies a fractional number in pos, which is stored in a "frac" parameter. The ">>" operator requests an arithmetic shift of the binary digits to the right. The "&" operator requests the binary logic operation "and". [0053] In Step 903, the condition is determined if the angle has a value equal to or greater than zero ("0"). If angle has a value equal to or greater than zero, the flow proceeds to step 904. Otherwise, the flow proceeds to Step 913. An angle equal to or greater than zero indicates that only reference pixels located on the horizontal boundary or stored in refH can be trusted to obtain prediction pixels in a prediction block. On the other hand, an angle less than zero indicates that reference pixels located on the vertical boundary or stored in refV are necessary to produce prediction pixels in the prediction block. [0054] In Step 904, it is determined whether frac is not zero. If frac is not zero, the flow advances to Step 905. If frac is zero, the flow advances to Step 906. frac equal to zero indicates that a prediction pixel in the prediction block can be copied directly from a pixel reference point on the horizontal border. non-zero frac indicates that the prediction direction intersects with the horizontal boundary at a non-integer position and an interpolation of more than one reference pixel is required to produce a prediction pixel in the prediction block. [0055] In Step 905, a counter "col" is set to zero ("0"). The col counter is used to address a reference pixel in refH. In Step 907, two reference pixels identified by "int + col + 1" and "int + col + 2" are retrieved from refH. These two reference pixels are defined by weight average or interpolated with frac to produce a prediction pixel v. Specifically, a reference pixel in refH identified by "int + col +1" is multiplied by "size - frac" and stored in a parameter a. A reference pixel in refH identified by "int + col + 2" is multiplied by "frac" and stored in a parameter b. The parameters a and b are then added and divided by size, that is, (size - frac) + frac. The division by size can be replaced by the shift to the right by log2_size. The derived prediction pixel v is stored in an array of memory areas called "prev", which represents a prediction block for the target block under a particular prediction direction. Each area of memory in prev is identified by the parameters line and col. Then, the col parameter is incremented by 1 in Step 908 and compared to the size in Step 909. As long as col is less than size, Steps 907 and 908 are repeated. When col becomes equal to size, the flow proceeds to Step 920. [0056] If frac is determined to be zero in Step 904, counter col is set to zero in Step 906. In Step 910, the prediction pixel v is copied directly from refH (int + col + 1) and then stored in the corresponding memory area in prev. col is then incremented by 1 in Step 911 and compared to size in Step 912. As long as col is less than size, Steps 910 and 911 are repeated. When col becomes equal to size, the flow proceeds to Step 920. [0057] Returning to Step 903, the angle less than zero requires reference pixels from refV to produce pixels in the prediction block. The col counter is set to zero in Step 913. It is then determined in Step 914 whether "int + col + 1" is less than zero. The equation "int + col + 1" equal to or greater than zero indicates that only the reference pixels stored in refH can still be trusted to produce prediction pixels in the prediction block and the flow proceeds to Step 915. The process performed in Step 915 is similar to that of Step 907, and its description will not be repeated here. col is then incremented by 1 in Step 916 and compared to size in Step 917. As long as col is less than size, Steps 914, 915 and 916 are repeated. When col becomes equal to size, the flow proceeds to Step 920. [0058] If "int + col + 1" is determined to be less than zero in Step 914, reference pixels stored in refV are needed to produce prediction pixels in the prediction block. In Step 918, the position of an intersection between the vertical boundary and a prediction direction is first determined. In Step 918, the position is represented by pos2. Please note that in Step 902, pos, that is, the position of an intersection between the horizontal boundary and a prediction direction is determined by "angle x (line + 1)". As angle represents a proportion of vertical and horizontal differences, "angle-1 x (col + 1)", instead of "angle x (line + 1)" is calculated to determine the position of an intersection between the vertical boundary and a prediction direction. As assumed above, the angle is in the size-to-size range (-size <angle <size). Therefore, a ratio a between angle and size is defined by: Next, angle-1 is defined by: Thus, pos2 is determined in Step 918 with the size square multiplied by col + 1 and then divided by the value absolute of the angle, as follows: [0059] As with pos, pos2 has a fractional number in a fixed point representation formed by an integer and a fractional part. The fractional part consists of the number of binary digits determined by log2_size. The entire part of pos2 is stored in an int2 parameter and the fractional part of pos2 is stored in a frac2 parameter. In Step 919, two reference pixels identified by "int2 + line + 1" and "int2 + line + 2" are obtained from refV. These two reference pixels are defined by the weight average or interpolated with frac2 to produce a prediction pixel v. Specifically, a refV reference pixel (int2 + line + 1) is multiplied by "size - frac2" and stored in a parameter a. A refV reference pixel (int2 + line + 2) is multiplied by "frac2" and stored in a parameter b. Parameters a and b are then added and divided by size or shifted to the right by log2_size. The prediction pixel produced v is stored in the corresponding prev memory area. Steps 914, 918, 919 and 916 are repeated until col becomes equal to size in Step 917. [0060] In Step 920, the line is increased by 1 unit. Then, in step 921, it is determined whether the line is less than size. As long as the line is less than size, the steps from Step 902 are repeated to produce a prediction pixel in the prediction block. The flow ends when the line becomes equal in size in Step 921. [0061] As mentioned above, an increase in the number of candidates in the prediction block contributes to the improvement of the coding efficiency, since an increase in the number of candidates in the prediction block leads to an increase in the computational workload. Therefore, in order to increase the number of candidates in the prediction block so that, in this way, the efficiency of the coding is improved, the process of generating a candidate from the prediction block needs to be analyzed in order to achieve the process efficiency later. When analyzing the process shown in FIG. 9, two computational bottlenecks can be identified. The first computational bottleneck is the Step 914 comparison and branching operation, which is repeated within the cycle. The second computational bottleneck is the step 918 split operation, which is also repeated within the cycle. [0062] Currently, SIMD (Single-Introduction Multiple Data, processing multiple data from a single instruction) is available to provide efficient computing. SIMD allows computers with multiple processing elements to perform the same operation on multiple data simultaneously. However, common SIMD architectures do not support the division and computation / branching implementation in a cycle and therefore cannot be used to implement the process shown in FIG. 9 due to the inclusion of Steps 914 and 918 in the cycle, although the cycles that start from Steps 907 and 910 are sufficiently robust to be implemented with SIMD. Therefore, it is one of the objects of the present invention to remove the computational bottlenecks of the process shown in FIG. 9 and provide low complexity intraprediction, which allows common SIMD architectures to implement parallel processing in all prediction directions shown in FIG. 8. [0063] FIG. 10 is a flow chart showing the low complexity intraprediction process according to an embodiment of the present invention, which was designed to replace the process of FIG. 9 in implementing the process at Step 504 of FIG. 5. In FIG. 10, the same process steps as performed in FIG. 9 are identified by the same step numbers used in FIG. 9, such as steps 900, 901, 902, 904, 905.906, 907, 908, 909, 910, 911, 912, 920 and 921. The description of these common steps is not repeated here. Steps 1000 and 1001 are steps peculiar to the process of FIG. 10. As shown from the comparison of the process shown in FIG. 9, the process of FIG. 10 eliminates the comparison step of Step 903 and all the branches branched to the left from Step 903, which are performed when angle is less than 0, thus eliminating the computational bottlenecks of steps 914 and 918. [0064] In steps 1000 and 1001 included, it is determined whether angle is equal to or greater than -1. When angle is greater than or equal to -1, reference pixels located on the horizontal boundary are sufficient to generate a prediction pixel on the prediction block and reference pixels on the vertical boundary are not required. On the other hand, if the angle is less than -1, reference pixels at the vertical boundary are necessary to generate a prediction pixel in the prediction block. In step 1001, the reference pixels stored in refH extend in the negative direction using at least some of the pixels stored in refV. Figures 11A and 11 B are schematic representations showing the extent of refH performed in step 1001. In FIG. 11A, reference pixels 1102 stored in refH are from the horizontal border located above target block 1101. Reference pixels 1103 stored in refV are from the vertical border located to the left of target block 1101. As shown in FIG. 11B, after Step 1001 of FIG. 10, some of the reference pixels in refV are copied to refH, which has an extended portion 1104 that extends in the negative direction. [0065] FIG. 12 is a flow chart showing the details of the process performed in Step 1001. In Step 1201, a col counter is set to -1. col is used to identify an address of the extended part of refH. In step 1202, a reference pixel in refV to be copied to the extended part of refH is identified by: The division in the above equation is a division of integers and the equation produces an integer as a result. The equation works similarly to the process of Step 918 shown in FIG. 9. In step 918, the entire value of pos2 is calculated by: Please note that the offset to the right of log2_tam is equivalent to dividing by size. [0066] In Step 1203, col is decreased by 1 unit. Then, it is determined in Step 1204 whether col equals angle. If col is not equal to angle, the flow returns to Step 1202. Steps 1202 and 1203 are repeated until col becomes equal to angle. Thus, the reference pixels are read from refV in ascending order or from top to bottom of the vertical border and copied in refH in decreasing order or from right to left of the horizontal border. In addition, not all reference pixels in refV are copied to refH. Only reference pixels located within the range from the top to the intersection of a prediction direction are copied from refV to refH [0067] Returning to FIG 10, the process steps that start from Step 902 are copied from FIG. 9 and include the steps for generating right-branched prediction pixels from the comparison step of Step 903 in FIG. 9. Please note, however, that the steps in FIG. 10 for the generation of prediction pixels use extended refH (addition of parts 1102 + 1104 in FIG. 11 B), whereas the corresponding steps in FIG. 9 use original refH (part 1102 in FIG. 10A). Since refH is extended in the negative direction, a separate intraprediction operation designed specifically to use reference pixels stored in refV, such as branches to the left from Step 903 in FIG 9, is not required, regardless of the angle sign. . [0068] FIG. 13 is a flow chart showing another modality of the process for extending refH using the reference pixels in refV. The process shown in figures 11 and 12 eliminates the bottleneck steps of Steps 914 and 918 shown in FIG. 9 and, therefore, improves the efficiency of the intraprediction process. The process shown in FIG. 13 eliminates the split operation performed in Step 1202 of FIG. 12 from the cycle for copying reference pixels from refV to refH. When eliminating the split operation from the cycle, the process shown in FIG. 13 further improves the efficiency of the intraprediction process. [0069] The process shown in FIG. 13 replaces Step 1202 of FIG. 12 by Steps 1301 and 1302. Step 1302 is within the cycle for copying reference pixels from refV to refH, while Step 1301 is out of the cycle. Step 1301 presents a new parameter called "Inv-Angle", which is defined by: Multiplying by 256 is equivalent to the shift to the left by eight and ensures that all bits resulting from the operation of the "size / angle" accounts for the calculation of the identification of a reference pixel in refV. In Step 1302, the address of a reference pixel in refV to be copied to the extended part of refH is identified by: col X Ângulolnv »8 The result of" col x Ângulolnv "is shifted to the right by 8 to undo the operation of left shift in Step 1301. Please note that the right shift operation in Step 1302 serves to round down the "col x ÂnguIolnv" result. To round to the nearest whole number, a rounding offset of 128 can be added to the result of "col x Ângulolnv" before performing the shift operation to the right. It should be noted that the number "256" is just an example and Step 1301 can adopt another offset number, preferably an integer power of 2, as long as the number is large enough to preserve all bits resulting from the "size / angle". For example, the number can be 64 in Step 1301, instead of 256, and the number of shifts to the right is 6 in Step 1302, instead of 8. If the number 64 is adopted, the offset for rounding should be 32. [0070] The calculation performed in step 1301 can be replaced by a query operation to further reduce the computational workload. In other words, a lookup table is prepared to store the Angulolnv values in relation to the angle values. Table 1 provided below is an example of a lookup table in step 1301 Table 1 In the table above, it is assumed that size is 8 and angle has an integer value from 1 to 8. However, it should be noted that the size does not is limited to 8 and can be another value, such as 4 and 16. In addition, angle can be a fractional number in a representation of the fixed point, as defined above. [0071] When a reference pixel is copied from refV to refH in Step 1202 of FIG. 12 or at Step 1302 of FIG. 13, the reference pixel can pass through a low-pass filter to reduce possible aliasing in the prediction block. The power of the low-pass filter may vary according to the angle value. For example, when the angle is -size, weak low-pass filters can be applied and when the angle is -2, strong low-pass filters can be applied. [0072] As explained above, not all reference pixels in refV are copied to refH. Since not all reference pixels in refV are copied, some information is lost when the pixels are copied. To reduce the loss of information, the resolution of the reference pixels in refH and refV can be doubled so that refH and refV contain not only the pixels of the previously encoded and reconstructed blocks, but also a pixel between two adjacent reconstructed pixels, which is generated by the interpolation of two adjacent pixels. You can simply average two adjacent pixels to generate an interpolation pixel. The interpolation process can be performed when the reference pixels are read in Step 900 of FIG. 9. When the pixel resolution is doubled in refH and refV, the address identifications of the reference pixels stored in refH and refV need to be scaled, as performed in steps 907, 910, 915 and 919 in FIG. 9 and at Step 1001 in FIG. 10. For example, "int + col + 1" performed in Steps 907, 910 and 915 needs to be changed to "int + 2xcol + 2". "int + col + 2" performed in Steps 907, 910 and 915 needs to be changed to "int + 2xcol + 3". "int2 + line + 1" and "int2 + line + 2" performed in Step 919 need to be changed to "int2 + 2x line + 2" and "int2 + 2x line + 3", respectively. [0073] In another embodiment, the process of Step 1202 in FIG. 12 can be changed simply to "refH [col] G refV [-col] to further simplify the copying process. Although it degrades the accuracy of the prediction, this modality provides the least complexity for the intraprediction operation. [0074] FIG. 11B shows from the extended 1104 addition of the to the refH. The extended portion 1104 need not be formed by reference pixels of refV. The extended part 1104 can be formed by pixels from an area of a previously reconstructed block, which corresponds in spatial terms to the location of the extended part 1104. In FIG. 11B, once extended in the negative direction, the extended refH (parts 1102 and 1104) varies from -size + 1 to 2x size. The extended refH range can be scaled to the range between 0 to 3x size -1 by adding the appropriate offset when addressing the reference pixels in the extended refH. The same applies to the resizing of the refV range. [0075] In another modality, the angle range limit can be taken freely. In the above modalities, angle is assumed to have a value within a range that varies from - size to size (-size <angle <size). In other words, in the above modalities, the angle range limits are defined by the size of the target block. Please note that the angle range limits can be set regardless of the size of the target block, although it is still preferable that the range limit is defined by an integer power of 2, so that log2_ range limit is a positive integer and the equation "range limit = 1 << log2_ range limit" is true. By choosing a large number suitable for the range limit, a large number of prediction directions can be established and represented by angle values in sufficiently wide angular intervals. [0076] If the angle range limit is set regardless of the size of the target block, the size shown in figures 9 and 10 needs to be replaced by range limit, while log2_size needs to be replaced by log2_ range limit, except for the steps 909, 912, 917 and 921. The "angle> -1" comparison performed in Step 1000 of FIG. 10 also needs to be replaced by "angle x size / range> -1" or "angle x size>-range limit". In addition, the size shown in steps 1202 and 1301 in figures FIGS. 12 and 13 need to be replaced by range limit and the comparison of "col = angle " performed in Step 1204 needs to be replaced by "col = angle x size / range ". [0077] If the range limit is entered as an angle range limit, Table 1 (shown earlier) can be changed as follows: Table 2 In Table 2, range limit is set to 32. Angle * is equal to an approximate integer of "range limit x tan (π x angle / 8)" where angle = 1, 2, 3, 4, 5, 6, 7 and 8. Angulolnv is equal to 256 x range limit / angle*. The values in Table 2 are all integers derived from rounding up. Instead of being rounded up, numbers can be rounded down. In Table 3 provided below, Ângulolnv is equal to 32 x range / angle limit *. Since "32" is used instead of "256", the accuracy of the prediction is necessarily lower than that in Table 2. Table 3 [0078] FIG. 14 is a flow chart showing another embodiment that further simplifies the process shown in FIG. 10. The process shown in FIG. 10, copying reference pixels from refV to refH, is performed before the flow enters the main prediction cycle, whereas the copying process shown in FIG. 14 is performed within the main prediction cycle. In addition, the process shown in FIG. 14 eliminates the Angulolnv variable. Steps 900, 902 and 921 shown in FIG. 14 are of the corresponding steps in FIG. 10. [0079] In Step 1401, a last counter starts with -1 and represents the index of the last pixel that was added to refH. In Step 902, pos is calculated by angle x (line + 1). As explained above, pos identifies the position of an intersection between the boundaries and the prediction direction represented by the angle. In the context of FIG. 9, Step 902 produces pos, which identifies the position of an intersection between the horizontal boundary and the prediction direction represented by the angle. Later in Step 902, an entire part in pos is stored in int and a fraction of pos is stored in a "frac" parameter - In Step 1402, it is determined whether int is less than ultimaimolnt. If int is less than last, a reference pixel in refV identified per line is copied to refH at an address identified by "int + 1". Step 1404 consists of steps 904, 905, 906, 907, 908, 909, 910, 911 and 912 shown in figures 9 and 10, whose descriptions are not repeated here. In Step 1405, int is copied to last. The copy operation from int to ultimaimolnt can be performed at Step 1403, instead of Step 1405. [0080] The copy operation in Step 1403 results in copying the same pixel copied in Steps 1202 and 1302, in which rounding down is used. Step 1403 can be modified to round to a nearest whole number by conditionally using "line + 1" instead of "line" in Step 1403 when the fractional fraction computed in Step 902 is greater than the offset, which is defined by range limit + (angle >> 1). Please note that the angle is -ve and frac is + ve. The use of "line + 1" results in rounding up. To effect the conditional line increment in 1 unit, the process performed in Step 1403 is changed to refH [int + 1] G refV [line - ((offset - frac) >> 31)], assuming that in 32-bit arithmetic the shift to the right of "shift - frac" results in -1 when frac is greater than the displacement and 0 when less. Thus, the address identifier "line - ((offset - frac) >> 31)" becomes "line + 1" when frac is greater than offset and "line" when less. If the offset is defined as the range limit, "offset - weak" will always be positive and therefore there will be no rounding. [0081] The source code developed in the C ++ programming language, which implements the process shown in FIG. 14, is indicated below. The source code is modified from the TComPrediction :: xPredlntraAng function included in the TComPrediction.cpp file, which is part of the TMuC 0.7 software developed by JCT-VC, which is available at http://hevc.kw.bbc.co .Uk / svn / ictvc.al24 / tags / 0.7. // Function to produce the simplified angular intrapreditions Void TComPrediction:: xPredIntraAng (Int * pSrc, Int iSrcStride, Pel * & rpDst, Int iDstStride, UInt iWidth, UInt iHeight, UInt uiDirMode, Bool bAbove, Bool bLeft, Bool bLeft) ; Int deltaInt, deltaFract, refMainIndex; Int intraPredAngle = 0; Int absAng = 0; Int signAng = 0; Int blkSize = iWidth; Bool modeDC = false; Bool modeVer = false; Bool modeHor = false; Pel * pDst = rpDst; // Maps the mode index to the main prediction angle and direction if (uiDirMode == 0) modeDC = true; else if (uiDirMode <18) modeVer = true; else modeHor = true; intraPredAngle = modeVer uiDirMode - 9: modeHor uiDirMode -25: 0; absAng = abs (intrapredAngle); signAng = intraPredAngle <0 -1: l; // Defines the bit offsets and scales the angle parameter to size2 Int iAngTable [9] = {0, 2, 5, 9, 13, 17, 21, 26, 32}; absAng = iAngTable [absAng]; intraPredAngle = signAng * absAng; // Perform the CC prediction if (modeDCH) {Pel dcval = predIntraGetPredValDC (pSrc, iSrcStride, iWidth, iHeight, bAbove, bLeft); for (k = 0; k <blkSize; k ++) {for (l = 0; l <blkSize; 1 ++) {pDst (k * iDstStride + 1] = dcval;}}} // Make angular predictions else {Pel tmp; Int * pSrcTL = pSrc - iSrcStride - 1; Int iStepMain = (modeVer) 1: iSrcStride; if (intraPredAngle == 0) {for (k = 0; k <blkSize; k ++) {for (l = 0; 1 <blkSize; 1 ++) {pDst [k * iDstStride + 1] = pSrcTL [(1+ 1) * iStepMain]; }}} else {Int iStepSide = (modeVer) iSrcStride 1; int lastDeltaInt = -1; Int iOffset = 32 + (intraPredAngle >> 1); // Allows rounding to the nearest side reference // Int iOffset = 32; // without rounding. Pel ref [2 * MAX_CU_SIZE]; Pel * refMain = ref + ((intraPredAngle <0) BlkSize: 0); if (intraPredAngle> 0) {for (k = 0; k <2 * blkSize; k ++) refMain [k] = pSrcTL [(k + 1) * iStepMain]; } else {for (k = -1; k <blkSize; k ++) // the rest are copied later in Step 1403, as and when requested refMain [k] = pSrcTL [(k + l) * iStepMain]; } for (k = 0; k <blkSize; k ++) {Int deltaPos = (k + 1) * intraPredAngle; deltaInt = deltaPos >> 5; deltaFract = deltaPos & (32 - l); if (deltaInt <lastDeltaInt) {// step 1402 lastDeltaInt = deltaInt; refMain [deltaInt] = pSrcTL [(k - ((iOffset-deltaFract) >> 31)) * iStepSide]; // step 1403} // step 1404 if (deltaFract) {// Performs linear filtering for (l = 0; l <blkSize; l ++) {refMainIndex = l + deltaInt; pDst [k * iDstStride + l] = (Pel) ((((32-deltaFract) * refMain [refMainIndex] + deltaFract * refMain [refMainlndex + l] + 16) >> 5); else {// Simply copy the whole number samples for (l = 0; l << blkSize; l ++) {pDst [k * iDstStride + l] = refMain [l + deltaInt]; // Rotate the block if this is the horizontal mode if (modeHor) {for (k = 0; k <blkSize-l; k ++) {for (l = k + 1; l <blkSize; l ++) {tmp = pDst [ k * iDstStride + 1]; pDst (k * iDstStride + 1] = pDst (1 * iDstStride + k]; pDst [1 * iDstStride + k] = tmp; [0082] Although many changes and modifications of the present invention will undoubtedly become apparent to persons skilled in the art after reading the previous description, it should be understood that any specific modality shown and described by way of illustration should not, under any circumstances , be considered limiting. Therefore, references to the details of various modalities are not intended to limit the scope of the statements, which describe only those features considered essential to the invention.
权利要求:
Claims (6) [1] 1. Video encoding method, characterized by the fact that it comprises computer executable steps performed by a video encoder processor to implement an intraprediction operation that derives a prediction block from a target block with block boundary pixels target values interpolated along an intraprediction angle, in which the border pixels comprise a horizontal matrix of horizontal border pixels and a vertical matrix of vertical border pixels, the intraprediction operation comprises: an execution step, based on prediction mode information that indicates the prediction mode, or a first process including: obtaining a value of a reverse angle parameter, corresponding to the intraprediction angle, from a lookup table that lists values of reverse angle parameters with respect, respectively, to a plurality of different angles of intraprediction; identify at least some of the vertical border pixels located in the vertical matrix at positions that are a multiplication function between the value obtained from the inverse angle parameter and a value from a horizontal location identifier which is a variable that represents positions in an extension of an extended horizontal matrix; add at least some of the vertical border pixels identified as horizontal border pixels to the extent of the extended horizontal matrix; and use only the horizontal border pixels in the extended horizontal matrix, without using the vertical border pixels, to derive the prediction block from the target block, or a second process including: obtaining a value of an inverse angle parameter, corresponding to the intraprediction angle, from a lookup table that lists values of inverse angle parameters in relation, respectively, to a plurality of different intraprediction angles; identify at least some of the horizontal border pixels located in the horizontal matrix at positions that are a multiplication function between the value obtained from the inverse angle parameter and a value from a vertical location identifier which is a variable that represents positions in an extension of an extended vertical matrix; add at least some of the horizontal border pixels identified as vertical border pixels to the extent of the extended vertical matrix; and use only the vertical border pixels in the extended vertical matrix, without using the horizontal border pixels, to derive the prediction block from the target block. [2] 2. Video encoding method, according to claim 1, characterized by the fact that the prediction mode information is information that represents one of the prediction directions. [3] 3. Video decoding method, characterized by the fact that it comprises computer executable steps performed by a video decoder processor to implement an intrapredictive operation that derives a prediction block from a target block with block boundary pixels target values interpolated along an intraprediction angle, in which the border pixels comprise a horizontal matrix of horizontal border pixels and a vertical matrix of vertical border pixels, the intraprediction operation comprises: a step of decoding the prediction mode to decode the prediction mode information, indicating the prediction mode from encoded video signals; and an execution step of execution, based on the prediction mode information decoded in the prediction mode decoding step, or a first process including: obtaining a value of an inverse angle parameter, corresponding to the intraprediction angle, from a lookup table that lists values of inverse angle parameters with respect, respectively, to a plurality of different intraprediction angles; identify at least some of the vertical border pixels located in the vertical matrix at positions that are a multiplication function between the value obtained from the inverse angle parameter and a value from a horizontal location identifier which is a variable that represents positions in an extension of an extended horizontal matrix; add at least some of the vertical border pixels identified as horizontal border pixels to the extent of the extended horizontal matrix; and use only the horizontal border pixels in the extended horizontal matrix, without using the vertical border pixels, to derive the prediction block from the target block, or a second process including: obtaining a value of an inverse angle parameter, corresponding to the intraprediction angle, from a lookup table that lists values of inverse angle parameters in relation, respectively, to a plurality of different intraprediction angles; identify at least some of the horizontal border pixels located in the vertical matrix at positions that are a multiplication function between the value obtained from the inverse angle parameter and a value from a vertical location identifier which is a variable that represents positions in an extension of an extended vertical matrix; add at least some of the horizontal border pixels identified as vertical border pixels to the extent of the extended vertical matrix; and use only the vertical border pixels in the extended vertical matrix, without using the horizontal border pixels, to derive the prediction block from the target block. [4] 4. Video decoding method, according to claim 3, characterized by the fact that the prediction mode information is information representing one of the prediction directions. [5] 5. Video encoder, characterized by the fact that it comprises a processor of a computer system and a memory that stores executable programs by the processor to implement an intraprediction operation that derives a prediction block from a target block with border pixels from the target block interpolated along an intraprediction angle, in which the border pixels comprise a horizontal matrix of horizontal border pixels and a vertical matrix of vertical border pixels, the intraprediction operation implemented by the processor to: perform a step of execution, based on information from the prediction mode indicating the prediction mode, or from a first process including: obtaining a value of an inverse angle parameter, corresponding to the intraprediction angle, from a query table that lists values of inverse angle parameters in relation, respectively, to a plurality of different angles intrapredictive angles; identify at least some of the vertical border pixels located in the vertical matrix at positions that are a multiplication function between the value obtained from the inverse angle parameter and a value from a horizontal location identifier which is a variable that represents positions in an extension of an extended horizontal matrix; add at least some of the vertical border pixels identified as horizontal border pixels to the extent of the extended horizontal matrix; and use only the horizontal border pixels in the extended horizontal matrix, without using the vertical border pixels, to derive the prediction block from the target block, or a second process including: obtaining a value of an inverse angle parameter, corresponding to the intraprediction angle, from a lookup table that lists values of inverse angle parameters in relation, respectively, to a plurality of different intraprediction angles; identify at least some of the horizontal border pixels located in the horizontal matrix at positions that are a multiplication function between the value obtained from the inverse angle parameter and a value from a vertical location identifier which is a variable that represents positions in an extension of an extended vertical matrix; add at least some of the horizontal border pixels identified as vertical border pixels to the extent of the extended vertical matrix; and use only the vertical border pixels in the extended vertical matrix, without using the horizontal border pixels, to derive the prediction block from the target block. [6] 6. Video decoder, characterized by the fact that it comprises a processor of a computer system and a memory that stores programs executable by the processor to implement an intrapredictive operation that derives a prediction block from a target block with border pixels of the target block interpolated along an intraprediction angle, where the border pixels comprise a horizontal matrix of horizontal border pixels and a vertical matrix of vertical border pixels, the intraprediction operation implemented by the processor to: execute: one step decoding the prediction mode to decode the prediction mode information, indicating the prediction mode of encoded video signals; and an execution step of execution, based on the prediction mode information decoded in the prediction mode decoding step, or a first process including: obtaining a value of an inverse angle parameter, corresponding to the intraprediction angle, from a lookup table that lists values of inverse angle parameters with respect, respectively, to a plurality of different intraprediction angles; identify at least some of the vertical border pixels located in the vertical matrix at positions that are a multiplication function between the value obtained from the inverse angle parameter and a value from a horizontal location identifier which is a variable that represents positions in an extension of an extended horizontal matrix; add at least some of the vertical pixels as horizontal border pixels to the extent of the extended horizontal matrix; and use only the horizontal border pixels in the extended horizontal matrix, without using the vertical border pixels, to derive the prediction block from the target block, or a second process including: obtaining a value of an inverse angle parameter, corresponding to the intraprediction angle, from a lookup table that lists values of inverse angle parameters in relation, respectively, to a plurality of different intraprediction angles; identify at least some of the horizontal border pixels located in the horizontal matrix at positions that are a multiplication function between the value obtained from the inverse angle parameter and a value from a vertical location identifier which is a variable that represents positions in an extension of an extended vertical matrix; add at least some of the horizontal pixels as vertical border pixels to the extent of the extended vertical matrix; and use only the vertical border pixels in the extended vertical matrix, without using the horizontal border pixels, to derive the prediction block from the target block.
类似技术:
公开号 | 公开日 | 专利标题 BR112013000963B1|2019-12-03|video encoding and decoding methods and video encoder and decoder KR102073638B1|2020-02-05|Picture prediction method and picture prediction device BR112013016043B1|2019-10-08|VIDEO DECODING AND VIDEO DECODER METHOD FOR PREDICING TARGET PIXEL VALUES IN A TARGET BLOCK UNDER A PLANE MODE BR112020006568A2|2020-10-06|position dependent prediction combinations in video encoding JP7004782B2|2022-01-21|Image prediction method and related equipment JP2022044612A|2022-03-17|Image prediction method and related equipment JP2022044613A|2022-03-17|Image prediction method and related equipment AU2016277600B2|2018-08-16|Low-complexity intra prediction for video coding AU2015264787B2|2016-10-13|Low-complexity intra prediction for video coding
同族专利:
公开号 | 公开日 EP3226560A1|2017-10-04| CA2804762A1|2012-01-19| AU2011279139A8|2013-02-21| MX2019010417A|2019-10-15| RU2710947C1|2020-01-14| KR101811360B1|2017-12-22| KR20180075706A|2018-07-04| CA3014131C|2020-12-15| EP3226560B1|2019-09-04| JP2019092208A|2019-06-13| US20130114713A1|2013-05-09| EP3570545B1|2021-05-19| MX2013000372A|2013-02-15| KR20160093087A|2016-08-05| CN105120263B|2018-09-14| AU2011279139A1|2013-01-24| JP5808839B2|2015-11-10| CN105120263A|2015-12-02| US10397608B2|2019-08-27| PT2594076T|2017-04-05| EP2934009A1|2015-10-21| RU2579947C2|2016-04-10| KR20160092055A|2016-08-03| ES2864048T3|2021-10-13| US10841613B2|2020-11-17| PL3522535T3|2021-07-05| EP3570545A1|2019-11-20| JP6479237B2|2019-03-06| HUE053802T2|2021-07-28| CN105120264A|2015-12-02| US10841614B2|2020-11-17| US10116960B2|2018-10-30| MX344987B|2017-01-13| RU2710946C1|2020-01-14| SG187065A1|2013-03-28| KR101835460B1|2018-03-08| EP2594076B1|2017-03-22| AU2011279139B2|2016-02-04| CN103004210A|2013-03-27| EP3522535A1|2019-08-07| PL3226560T3|2019-12-31| CN105227960B|2018-06-05| KR20180073720A|2018-07-02| KR101878293B1|2018-07-13| PT3522535T|2021-04-06| CA2804762C|2016-11-08| EP3232666B1|2019-05-01| KR20130088125A|2013-08-07| EP3522535B1|2021-03-10| EP3232666A1|2017-10-18| ES2621902T3|2017-07-05| MX361484B|2018-12-06| JP6484740B2|2019-03-13| US20190335201A1|2019-10-31| CA3014042C|2021-01-05| US9225986B2|2015-12-29| CA2934184A1|2012-01-19| US20160021392A1|2016-01-21| JP2014158306A|2014-08-28| KR101927283B1|2019-03-12| EP2934008B1|2016-09-14| ES2729031T3|2019-10-29| PL2934009T3|2017-10-31| KR101745928B1|2017-06-12| ES2748100T3|2020-03-13| PL2934008T3|2017-01-31| JP6828199B2|2021-02-10| BR112013000963A2|2016-05-24| CA3014052C|2020-12-15| RU2613722C1|2017-03-21| PT2934008T|2016-10-18| RU2019112303A3|2020-10-23| RU2019112303A|2020-10-23| JP2017005720A|2017-01-05| WO2012009540A1|2012-01-19| HUE054630T2|2021-09-28| US20180184120A1|2018-06-28| CN103004210B|2016-01-27| EP2594076A4|2014-07-30| JP2018129850A|2018-08-16| RU2013106296A|2014-10-20| PL3232666T3|2019-08-30| JP2018129851A|2018-08-16| US20160057448A1|2016-02-25| RU2658880C1|2018-06-25| PT2934009T|2017-08-16| CA3014131A1|2012-01-19| PT3570545T|2021-06-15| JP2013534797A|2013-09-05| JP6169554B2|2017-07-26| KR20170141289A|2017-12-22| CA3014042A1|2012-01-19| US9942565B2|2018-04-10| RU2738786C2|2020-12-16| RU2613725C1|2017-03-21| ES2605530T3|2017-03-14| KR101924885B1|2018-12-04| US20190335202A1|2019-10-31| KR20180026788A|2018-03-13| JP2015053728A|2015-03-19| PL3570545T3|2021-09-27| JP2020099085A|2020-06-25| ES2637446T3|2017-10-13| EP2934009B1|2017-07-12| PL2594076T3|2017-07-31| CN105120264B|2018-06-12| EP2594076A1|2013-05-22| JP6321091B2|2018-05-09| CA3014052A1|2012-01-19| CA2934184C|2018-09-25| MX367865B|2019-09-05| JP5687341B2|2015-03-18| CA3096445A1|2012-01-19| PT3226560T|2019-10-14| CA3098217A1|2012-01-19| RU2687031C1|2019-05-06| CN105227960A|2016-01-06| KR101927281B1|2018-12-10| EP2934008A1|2015-10-21| ES2873847T3|2021-11-04| PT3232666T|2019-06-07| JP6663520B2|2020-03-11|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题 US6263108B1|1997-10-23|2001-07-17|Sony Corporation|Apparatus and method for recovery of lost/damaged data in a bitstream of data based on compatibility of adjacent blocks of data| EP1765019B1|2002-02-01|2008-01-16|Matsushita Electric Industrial Co., Ltd.|Moving picture coding method and moving picture coding apparatus| CN100562119C|2002-02-01|2009-11-18|松下电器产业株式会社|Animated image interpretation method and animated image code translator| US7170937B2|2002-05-01|2007-01-30|Texas Instruments Incorporated|Complexity-scalable intra-frame prediction technique| US7539714B2|2003-06-30|2009-05-26|Intel Corporation|Method, apparatus, and instruction for performing a sign operation that multiplies| US7650032B2|2003-08-19|2010-01-19|Panasonic Corporation|Method for encoding moving image and method for decoding moving image| EP1558039A1|2004-01-21|2005-07-27|Deutsche Thomson-Brandt Gmbh|Method and apparatus for generating/evaluating prediction information in picture signal encoding/decoding| KR101000926B1|2004-03-11|2010-12-13|삼성전자주식회사|Filter for removing blocking effect and filtering method thereof| KR101204788B1|2004-06-03|2012-11-26|삼성전자주식회사|Method of and apparatus for predictive video data encoding and/or decoding| CN1306824C|2004-07-29|2007-03-21|联合信源数字音视频技术(北京)有限公司|Image boundarg pixel extending system and its realizing method| US7778480B2|2004-11-23|2010-08-17|Stmicroelectronics Asia Pacific Pte. Ltd.|Block filtering system for reducing artifacts and method| KR100657919B1|2004-12-13|2006-12-14|삼성전자주식회사|Apparatus and method for intra prediction of an image data, apparatus and method for encoding of an image data, apparatus and method for intra prediction compensation of an image data, apparatus and method for decoding of an image data| JP4542447B2|2005-02-18|2010-09-15|株式会社日立製作所|Image encoding / decoding device, encoding / decoding program, and encoding / decoding method| JP2007214641A|2006-02-07|2007-08-23|Seiko Epson Corp|Coder, decoder, image processing apparatus, and program for allowing computer to execute image processing method| US20070274398A1|2006-05-23|2007-11-29|Metta Technology, Inc.|Parallelization of Video Decoding on Single-Instruction, Multiple-Data Processors| US20090268810A1|2006-09-29|2009-10-29|Congxia Dai|Geometric intra prediction| US7991236B2|2006-10-16|2011-08-02|Nokia Corporation|Discardable lower layer adaptations in scalable video coding| WO2008140656A2|2007-04-03|2008-11-20|Gary Demos|Flowfield motion compensation for video compression| WO2009037828A1|2007-09-21|2009-03-26|Panasonic Corporation|Image encoding device and image decoding device| EP2046053A1|2007-10-05|2009-04-08|Thomson Licensing|Method and device for adaptively quantizing parameters for image coding| JP4948435B2|2008-01-28|2012-06-06|キヤノン株式会社|Video encoding apparatus and video encoding method| KR20090095316A|2008-03-05|2009-09-09|삼성전자주식회사|Method and apparatus for image intra prediction| CN101247525B|2008-03-24|2010-06-02|北京邮电大学|Method for improving image intraframe coding velocity| US8681875B2|2008-11-25|2014-03-25|Stmicroelectronics Asia Pacific Pte., Ltd.|Apparatus and method for coding block boundary detection using interpolated autocorrelation| JP5238523B2|2009-01-13|2013-07-17|株式会社日立国際電気|Moving picture encoding apparatus, moving picture decoding apparatus, and moving picture decoding method| JP2010251953A|2009-04-14|2010-11-04|Sony Corp|Image encoder and method of encoding image, and computer program| KR101510108B1|2009-08-17|2015-04-10|삼성전자주식회사|Method and apparatus for encoding video, and method and apparatus for decoding video| EP3570545B1|2010-07-14|2021-05-19|NTT DoCoMo, Inc.|Low-complexity intra prediction for video coding| RU2630886C2|2013-03-29|2017-09-13|ДжейВиСи КЕНВУД КОРПОРЕЙШН|Image decoding device, image decoding method and image decoding program|KR100231977B1|1992-10-08|1999-12-01|사토 게니치로|Dicing method| US6280835B1|1996-12-20|2001-08-28|Asahi Kagaku Kogyo Co., Ltd.|Thermoplastic acrylic resin brittle film| EP3570545B1|2010-07-14|2021-05-19|NTT DoCoMo, Inc.|Low-complexity intra prediction for video coding| KR101530284B1|2010-07-16|2015-06-19|삼성전자주식회사|Method and apparatus for video intra prediction encoding, and method and apparatus for video intra prediction decoding| US9008175B2|2010-10-01|2015-04-14|Qualcomm Incorporated|Intra smoothing filter for video coding| KR20120140181A|2011-06-20|2012-12-28|한국전자통신연구원|Method and apparatus for encoding and decoding using filtering for prediction block boundary| US8811760B2|2011-10-25|2014-08-19|Mitsubishi Electric Research Laboratories, Inc.|Coding images using intra prediction modes| US10645398B2|2011-10-25|2020-05-05|Texas Instruments Incorporated|Sample-based angular intra-prediction in video coding| WO2013070629A1|2011-11-07|2013-05-16|Huawei Technologies Co., Ltd.|New angular table for improving intra prediction| WO2013181821A1|2012-06-07|2013-12-12|Mediatek Singapore Pte. Ltd.|Improved intra transform skip mode| KR101307257B1|2012-06-28|2013-09-12|숭실대학교산학협력단|Apparatus for video intra prediction| TWI627857B|2012-06-29|2018-06-21|Sony Corp|Image processing device and method| US9729875B2|2013-07-08|2017-08-08|Sony Corporation|Palette coding mode| US20150016516A1|2013-07-15|2015-01-15|Samsung Electronics Co., Ltd.|Method for intra prediction improvements for oblique modes in video coding| WO2015054813A1|2013-10-14|2015-04-23|Microsoft Technology Licensing, Llc|Encoder-side options for intra block copy prediction mode for video and image coding| RU2666635C2|2013-10-14|2018-09-11|МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи|Features of base colour index map mode for video and image coding and decoding| CN105765974B|2013-10-14|2019-07-02|微软技术许可有限责任公司|Feature for the intra block of video and image coding and decoding duplication prediction mode| EP3090553A4|2014-01-03|2017-12-20|Microsoft Technology Licensing, LLC|Block vector prediction in video and image coding/decoding| US10390034B2|2014-01-03|2019-08-20|Microsoft Technology Licensing, Llc|Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area| US10542274B2|2014-02-21|2020-01-21|Microsoft Technology Licensing, Llc|Dictionary encoding and decoding of screen content| US10368091B2|2014-03-04|2019-07-30|Microsoft Technology Licensing, Llc|Block flipping and skip mode in intra block copy prediction| WO2015192353A1|2014-06-19|2015-12-23|Microsoft Technology Licensing, Llc|Unified intra block copy and inter prediction modes| CN105874795B|2014-09-30|2019-11-29|微软技术许可有限责任公司|When wavefront parallel processing is activated to the rule of intra-picture prediction mode| US9591325B2|2015-01-27|2017-03-07|Microsoft Technology Licensing, Llc|Special case handling for merged chroma blocks in intra block copy prediction mode| JP6122516B2|2015-01-28|2017-04-26|財團法人工業技術研究院Industrial Technology Research Institute|Encoding method and encoder| JP6492847B2|2015-03-24|2019-04-03|日本電気株式会社|Video encoding system, video encoding circuit, and video encoding method| US20180255304A1|2015-03-29|2018-09-06|Lg Electronics Inc.|Method and device for encoding/decoding video signal| CN106664405B|2015-06-09|2020-06-09|微软技术许可有限责任公司|Robust encoding/decoding of escape-coded pixels with palette mode| WO2017034331A1|2015-08-27|2017-03-02|엘지전자 주식회사|Method and device for chroma sample intra prediction in video coding system| CN106231340B|2016-09-23|2019-08-27|优酷网络技术(北京)有限公司|A kind of infra-frame prediction decoding method and device based on HEVC| CN113784122A|2016-12-23|2021-12-10|华为技术有限公司|Intra-frame prediction device for expanding preset directional intra-frame prediction mode set| US10225578B2|2017-05-09|2019-03-05|Google Llc|Intra-prediction edge filtering| JP2019041165A|2017-08-23|2019-03-14|富士通株式会社|Image encoding device, image decoding device, image processing method, and image processing program| US10992939B2|2017-10-23|2021-04-27|Google Llc|Directional intra-prediction coding| WO2019124205A1|2017-12-18|2019-06-27|パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ|Encoding device, decoding device, encoding method, and decoding method| US10986349B2|2017-12-29|2021-04-20|Microsoft Technology Licensing, Llc|Constraints on locations of reference blocks for intra block copy prediction| WO2021034231A2|2019-12-19|2021-02-25|Huawei Technologies Co., Ltd.|Method and apparatus of position dependent prediction combination for oblique directional intra prediction| WO2021045655A2|2019-12-31|2021-03-11|Huawei Technologies Co., Ltd.|Method and apparatus for intra prediction|
法律状态:
2018-03-27| B15K| Others concerning applications: alteration of classification|Ipc: H04N 19/593 (2014.01), H04N 19/11 (2014.01), H04N | 2018-12-26| B06F| Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]| 2019-11-19| B09A| Decision: intention to grant [chapter 9.1 patent gazette]| 2019-12-03| B16A| Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]|Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 14/07/2011, OBSERVADAS AS CONDICOES LEGAIS. (CO) 20 (VINTE) ANOS CONTADOS A PARTIR DE 14/07/2011, OBSERVADAS AS CONDICOES LEGAIS |
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 US36432210P| true| 2010-07-14|2010-07-14| US38854110P| true| 2010-09-30|2010-09-30| PCT/US2011/044014|WO2012009540A1|2010-07-14|2011-07-14|Low-complexity intra prediction for video coding| 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|